package com.supermap.dubbo.api.product;

import com.alibaba.fastjson.JSONObject;
import com.supermap.dataservice.util.JSONUtil;
import com.supermap.dataservice.util.JSONUtils;
import org.springframework.web.multipart.MultipartFile;

/**
 * @Author:zhoujian
 * @Desciption:专家会商服务
 * @date:2019-07-24 10:13
 * @version:v1.0.0
 */
public interface ExpertConsultationService {

    /**
     * 创建会商记录
     */
    JSONUtils insertConsultation(JSONObject jsonObject);

    /**
     * 邀请会商成员
     * @param id 会商id
     * @param  joinUserIds 被邀请用户id集合
     * @param  joinUserNames 被邀请用户名集合
     */
    JSONUtils addJoinUser(int id , String joinUserIds , String joinUserNames);

    /**
     *  踢出会商成员（只支持一个一个踢出，不支持批量踢人）
     * @param id 会商记录id
     * @param userId 会商创建用户id
     * @param joinUserId 被踢用户id
     * @param joinUserName 被踢用户名
     */
    JSONUtils delJoinUser(int id , String userId , String joinUserId , String joinUserName);

    /**
     *  删除会商信息
     *  @param id 会商id
     *  @param userId 创建会商用户id
     */
    JSONUtils delConsultation(int id , String userId);

    /**
     * 根据ID查询
     * @param id 会商id
     * @return
     */
    JSONUtils selectByPrimaryKey(Integer id);
    /**
     * 查看聊天记录
     * @param  id 会商id
     */
    JSONUtils selectHistoryChat(int id);

    /**
     * 写入聊天记录
     * @param  id 会商id
     */
    void saveHistoryChat(int id , String message);

    /**
     * 根据用户查找会商记录
     * @param  jsonUserId 参与会商的userid
     */
    JSONUtils selectConsultationListByJsonUserId(String jsonUserId);

    /**
     * 判断会商记录中是否包含指定用户
     * @param id 会商id
     * @param joinUserName 参与会商用户
     */
    JSONUtils userExistsConsultation(int id , String joinUserName);

    /**
     * 上传会商文件
     */
    JSONUtils uploadFile(String fileUrl , String fileName ,String uploadUserName , Integer consultationId);


    /**
     * 获取会商文件列表
     */

    JSONUtils selectFileListByConsultation(Integer consultationId);

    /**
     * 判断用户是的已经在会商
     * @param consultationId
     * @param userName
     * @return
     */
    JSONUtils userIsOnline(Integer consultationId , String userName);


    JSONUtils onlineUserList(Integer consultationId);
}